package com.zbkj.admin.service;

import com.github.pagehelper.PageInfo;
import com.zbkj.common.model.project.*;
import com.zbkj.common.model.system.SystemAdmin;
import com.zbkj.common.request.enquiry.ReportRequest;
import com.zbkj.common.request.project.*;
import com.zbkj.common.response.UploadResponse;
import com.zbkj.common.response.project.*;
import com.zbkj.common.response.standard.ReportDetailResponse;
import com.zbkj.common.vo.MyRecord;
import com.zbkj.common.vo.project.AiNotifyFunExcelParseVo;
import com.zbkj.common.vo.project.SoftwareCalcVo;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * @Auther:
 * @Date: 2024/9/13 08:56
 * @Description:
 */
public interface AdminProjectHandleV2Service {
    PageInfo<AdminProjectInfoResponse> projectList(AdminProjectQueryRequest queryRequest);

    AdminProjectInfoResponse getProjectInfo(Long projectId);

    List<InformationResponse> getValidProjectFileList(Long projectId);

    void aiContentSubmit(AdminAiContentRequest contentRequest, SystemAdmin systemAdmin);

    List<EstimateAi> aiContentList(Long projectId);

    ProjectInfo getProjectAndCheck(Long projectId);


    EstimateRestProjectResponse getEstimateResult(Long projectId);

    EstimateFunEditRestResponse estimateFunSave(AdminEstimateFunSaveRequest saveRequest, SystemAdmin systemAdmin);

    InformationResponse getEstimateFunFile(Long projectId,SystemAdmin systemAdmin);

    void statusConfirm(Long projectId, Integer status);

    void reportApplyAudit(AdminReportApplyAuditRequest auditRequest, SystemAdmin systemAdmin);

    void reportNotifClient(Long projectId);

    UploadResponse informationUpload(Integer type, MultipartFile multipartFile);

    void estimateFileSave(AdminInfomationRequest infomationRequest, SystemAdmin systemAdmin);

    InformationResponse getValidEstimateFile(Long projectId, Integer type);

    /**
     * 自动ai结算请求定时任务触发
     * @param task
     * @return  1 执行成功  2 取消任务
     */
    int aiAutomCallTask(AireqTask task);

    /**
     * ai估算回调通知保存处理
     * @param notifyRequest
     * @param projectInfo
     * @param parseFunDataList
     */
    void aiNotifyResultSaveHandle(AiNotifyRequest notifyRequest, ProjectInfo projectInfo, List<AiNotifyFunExcelParseVo> parseFunDataList);

    /**
     * 计算估算软件规模和软件评估费用
     */
    SoftwareCalcVo estimateReusltCalc(long projectId, int projectType, String cityCode);

    void demoProjectAutoHandleTask(Long projectId);

    void demoProjectAutoHandleSave(ProjectInfo projectInfo, List<EstimateInformation> estFileInfoList, List<EstimateFun> efList);

    void projectParamEditSave(ProjectParamSaveRequest paramSaveRequest);

    List<EstimateFunDocResponse> getEstimateFunDoc(Long projectId);

    void estimateFunToAi(Long projectId);


    /**
     * 项目状态更新为 取消退款处理
     * @param projectInfo
     */
    void projectFefundHandle(ProjectInfo projectInfo);

    boolean submitDelivery(Long projectId, ProjectDeliveryRequest queryRequest);

    AiReportResponse aiReport(ReportRequest reportRequest);

    List<ReportDetailResponse> estimateDetail(Long projectId);


    UploadResponse fileUpload(MultipartFile file);

    List<ProjectTypeStatisticsResponse> projectTypeStatistics(Long projectId);
}
